package kevin.bigdata.spark.rdd.builder

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * @author: kevin  
 * @date: 11:37 2021/4/30
 */
object RDD_Memory_Par {
  def main(args: Array[String]): Unit = {
    //TODO 准备环境
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
      .set("spark.testing.memory","2147480000")
      .set("spark.default.parallelism", "3")

    val sc = new SparkContext(sparkConf)

    //TODO 创建RDD
    //RDD并行度 & 分区
    //makeRDD方法可以传递第二个参数，其表示分区的数量
//    val rdd = sc.makeRDD(List(1, 2, 3, 4), 2)
    //第二个参数可以不传递，默认并行度如下
    //scheduler.conf.getInt("spark.default.parallelism", totalCores)
    //spark在默认情况下，从配置对象中获取配置参数：spark.default.parallelism
    //如果获取不到，那么使用totalCOres属性，其取值为当前运行环境的最大可用核数
    val rdd = sc.makeRDD(List(1,2,3,4))

    //将处理的数据保存成分区文件
    rdd.saveAsTextFile("output")

    //TODO 关闭环境
    sc.stop()
  }
}
